When a user initiates a potentially long-running action on a computing system, it is often desirable to notify the user about the status of that long-running action. For example, FIG. 1A illustrates a file-copying status notification given to a user while files are being copied/moved from one location to another. With such a notification, the user can see which files are being copied/moved from one file folder to another. Similarly, FIG. 1B illustrates an installation status notification given to a user while one or more software programs are being installed.
In addition to software installation and copying/moving files, other examples of long-running actions where it may be desirable to give the user status notification include (but are not limited to) transforming data, updating configurations, performing complex calculations, accessing a resource, installing software, downloading files, searching databases, defragmenting hard disks, performing long-running transactions over slow networks. In many software systems, there exist many different long-running actions like those described above. Long-running actions may and typically do include a series of sub-actions. With these long-running actions, it is often desirable to notify a user of their current status.
To accomplish that user-notification goal, conventional long-running actions typically utilize a dedicated status-notification user-interface (UI). Furthermore, these dedicated UIs are typically customized for their particular purpose. These UIs typically utilize visual metaphors to represent activity status. For example, the files flying from one folder to another shown in FIG. 1A illustrates the status of the file-copying activity. Similarly, the “thermometer” shown in FIG. 1B illustrates the status of the software installation.
Furthermore, in accomplishing the user-notification goal, each conventional long-running action uses its own customized mechanism for tracking its activity status. Such a mechanism may simply be storage locations for storing information about the current status of a long-running action and/or procedural definitions for how such status information is acquired and acted upon.
A common mechanism for representing and tracking the activity status of a potentially long-running action does not exist. Instead, the conventional approach is to repeatedly recreate an activity-status tracking mechanism for each application of a computer system.